Development of large software systems is a complex undertaking. In addition to coordinating the activities of a number of programmers (who may be working on different but overlapping or interacting subsystems), automatic development support tools may be called upon to extract more useful work from available computing resources and to guard against errors.
Current systems can be configured to automatically perform non-interactive (“batch”) tasks on a set schedule (for example, at a predetermined time). However, tying batch jobs to real-world (or “wall clock”) time can result in unexpected and irreproducible system operations when transient events such as excess processing demand or system outages cause batch jobs to take longer than normal or to begin after their scheduled times.
Methods of improving a computing environment's resource utilization efficiency, throughput, determinism and reproducibility may be of value.